/** <b>odczytywanie.java</b> - Klasa komunikuje się z termometrem przez porty COM
 * Created on 2010-03-06, 17:45:45 */
import java.io.Serializable;
import javax.accessibility.Accessible;
import javax.swing.JTextField;

/** @author TOMASZ JASZUL - TIiM, Wydział Elektroniki i Inforamtyki, Politechnika Koszalińska
* III rok, sem VI. Rok akademicki 2009/2010.
* @version odczytanie 1.0*/

/** <b>odczytanie.java</b> - Główna klasa komponentu */
public class odczytywanie extends javax.swing.JPanel implements Accessible, Serializable {
   SimpleSerialNative ss;
   private boolean czy_polaczony;
   private int port;
   private int[] rejestrD = new int[8];
   private int[] rejestrC = new int[8];
   private int[] rejestrB = new int[8];
   private String komunikat;

    /** Geter - zwraca wartość z wynikiem
    *@return jTextField2 - wartość z czujnika*/
    public JTextField getjTextField2() {
        return jTextField2;
    }

    /** Seter - ustawia wartość na wyswietlaczu
    *@param nazwa - wartość do ustawinia na wysiwetlaczu*/
    public void setjTextField2(String nazwa) {
        jTextField2.setText(nazwa);
    }


    /** Geter zwaraca wartość komunikatu
     @return komunikat*/
    public String getKomunikat() {
    komunikat=jTextField2.getText();
        return this.komunikat;
    }

    /** Creates new form IOControl
     * Metoda służy do odczytania wartości z portu*/
    public odczytywanie() {    
        if (ss != null) // w konstruktorze gdy wykryjesz używany port to go zwolnij
            ss.close();
        else
            initComponents();
        komboListaPortow.setEditable(false);
        komboListaPortow.removeAllItems();
        komboListaPortow.addItem("Kliknij przycisk");
        buttonPolacz.setEnabled(false);
        czy_polaczony = false;

        for (int i=0; i<8;i++)
        {rejestrD[i]=0;
         rejestrC[i]=0;
         rejestrB[i]=0;
        }
    }

  
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonWykryjPorty = new javax.swing.JButton();
        komboListaPortow = new javax.swing.JComboBox();
        buttonPolacz = new javax.swing.JButton();
        labelKomunikat = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        jSpinner1 = new javax.swing.JSpinner();
        jLabel1 = new javax.swing.JLabel();
        jButton9 = new javax.swing.JButton();
        jTextField2 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();

        setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(40, 40, 40)));

        buttonWykryjPorty.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        buttonWykryjPorty.setForeground(new java.awt.Color(40, 40, 40));
        buttonWykryjPorty.setText("Wykryj Porty");
        buttonWykryjPorty.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonWykryjPortyActionPerformed(evt);
            }
        });

        komboListaPortow.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        komboListaPortow.setForeground(new java.awt.Color(40, 40, 40));
        komboListaPortow.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        buttonPolacz.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        buttonPolacz.setForeground(new java.awt.Color(40, 40, 40));
        buttonPolacz.setText("Połącz");
        buttonPolacz.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                buttonPolaczActionPerformed(evt);
            }
        });

        labelKomunikat.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        labelKomunikat.setForeground(new java.awt.Color(40, 40, 40));
        labelKomunikat.setText("Nie połączony");
        labelKomunikat.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledBorder("Odczyt z portu przetwornika AC\\DC"), "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(255, 0, 0))); // NOI18N
        jPanel4.setForeground(new java.awt.Color(40, 40, 40));
        jPanel4.setFont(new java.awt.Font("Trebuchet MS", 0, 11));

        jLabel1.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        jLabel1.setForeground(new java.awt.Color(40, 40, 40));
        jLabel1.setText("Wybierz numer kanału:");

        jButton9.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        jButton9.setForeground(new java.awt.Color(40, 40, 40));
        jButton9.setText("Odczytaj z urządzenia");
        jButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton9ActionPerformed(evt);
            }
        });

        jTextField2.setBackground(new java.awt.Color(0, 0, 0));
        jTextField2.setFont(new java.awt.Font("LCD2", 1, 36));
        jTextField2.setForeground(new java.awt.Color(102, 204, 0));

        jLabel2.setFont(new java.awt.Font("Trebuchet MS", 0, 11));
        jLabel2.setForeground(new java.awt.Color(40, 40, 40));
        jLabel2.setText("Wartość:");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(111, 111, 111)
                        .addComponent(jLabel2)
                        .addContainerGap(153, Short.MAX_VALUE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 211, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(70, 70, 70))))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(7, 7, 7)
                        .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton9))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addGap(13, 13, 13)
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.DEFAULT_SIZE, 66, Short.MAX_VALUE)))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap())
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(komboListaPortow, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(labelKomunikat, javax.swing.GroupLayout.DEFAULT_SIZE, 137, Short.MAX_VALUE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(buttonWykryjPorty, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(buttonPolacz, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap(237, Short.MAX_VALUE))))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(komboListaPortow, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(labelKomunikat))
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(buttonWykryjPorty)
                    .addComponent(buttonPolacz))
                .addGap(29, 29, 29)
                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(24, Short.MAX_VALUE))
        );
    }// </editor-fold>//GEN-END:initComponents

    /**<b>Wykryj porty</b> - Obsluga przycisku, uruchamia metodę wykyjPorty()
     * @param evt - nasłuchuje zdarzenia*/
    private void buttonWykryjPortyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonWykryjPortyActionPerformed
        komboListaPortow.removeAllItems();
        wykryjPorty();
    }//GEN-LAST:event_buttonWykryjPortyActionPerformed

     /**<b>Polaczy</b> - Obsluga przycisku, metoda sprawdza laczy i komunikuje port
     * @param evt - nasłuchuje zdarzenia
     * @exception InterruptedException e - w przypadku braku połączenia */
    private void buttonPolaczActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPolaczActionPerformed
     if (czy_polaczony==false) {
        String temp = String.valueOf(komboListaPortow.getSelectedItem());
        char c = temp.charAt(3);// pobierz trzeci znak
        port = Integer.valueOf(String.valueOf(c));// i przekształć go na cyfrę              
        String temp2="";
        ss = new SimpleSerialNative(port);
        ss.writeString("@");//zapytaj kim jest urządzenie
        ss.writeByte((byte)'\n');// wyślij zapytanie
        try {
            Thread.sleep(50);}
        catch (InterruptedException e){}// poczekaj chwilę niech to dojdzie

        for (int i=0;i <2;i++) {// odczytaj odpowiedź
            String inputString2 = ss.readString();
            temp2 = temp2 + inputString2;
            System.out.println(inputString2);
            try {
                Thread.sleep(1);}
            catch (InterruptedException e) { }
        }

       labelKomunikat.setText(temp2);
       buttonPolacz.setText("Rozłącz");
       czy_polaczony=true;
       }
     else {
          ss.close();
          buttonPolacz.setText("Połącz");
          labelKomunikat.setText("Nie połączony");
          czy_polaczony=false;
        }
    }//GEN-LAST:event_buttonPolaczActionPerformed

     /**<b>Odczytj</b> - Metoda odcztyje wartość z urządzenia i czujników
     * @param evt - nasłuchuje zdarzenia\
     * @exception NumberFormatException e - w przypadku braku odczytu lub pustej wartości */
    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed
        ss.writeByte((byte)'\u001B');
        String spinner=jSpinner1.getValue().toString();
        int wartspinnera=Integer.parseInt(spinner);        
        ss.writeString("A2"+wartspinnera);      
        String wejscie=ss.readString();
        try{
            double wyj=Double.parseDouble(wejscie)*100;
            jTextField2.setText(String.valueOf(wyj));
            }
        catch(java.lang.NumberFormatException e)
            {jTextField2.setText("");}
    }//GEN-LAST:event_jButton9ActionPerformed

  /**<b>wykonaj</b> - Metoda odcztyje wartość z urządzenia i czujników, jest metoda typu seter
  * @exception NumberFormatException e - w przypadku braku odczytu lub pustej wartości */
  public void wykonaj() {
  String spinner=jSpinner1.getValue().toString();
  int wartspinnera=Integer.parseInt(spinner);
  int licznik=0;
  licznik++;
  ss.writeString(spinner);
  String wejscie=ss.readString();
  try{
      double wyj=Double.parseDouble(wejscie)*100;
      jTextField2.setText(String.valueOf(wyj));
      }
  catch(java.lang.NumberFormatException e)
       {jTextField2.setText("");}
}

  /**<b>wykryjPorty</b> - Metoda wykyrwa aktywne i dostępne porty COM*/
   private void wykryjPorty() {
    czy_polaczony=false;
    int ilosc_portow=0;
    if (ss != null)
    ss.close();
    labelKomunikat.setText("Nie połączony");
    buttonPolacz.setText("Połącz");
    buttonPolacz.setEnabled(false);
    for (int porcik =1; porcik < 10; porcik++)
    {
    ss = new SimpleSerialNative(porcik);
    if (ss.isValid()==true) {
        komboListaPortow.addItem("COM"+porcik);
	System.out.println("Com" + porcik + " jest ok");
        buttonPolacz.setEnabled(true);
        ilosc_portow++;
        }
    else
        System.out.println("Com" + porcik + " jest zły");
    ss.close();
    ss=null;
    }
    if (ilosc_portow==0)
        komboListaPortow.addItem("Brak portów");
}

 /**Seter <b>setBit0</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit0(int wartosc) {
         ustawPortD(7,wartosc);}

 /**Seter <b>setBit1</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit1(int wartosc) {
     ustawPortD(6,wartosc);}

 /**Seter <b>setBit2</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit2(int wartosc) {
     ustawPortD(5,wartosc);}

 /**Seter <b>setBit3</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit3(int wartosc) {
     ustawPortD(4,wartosc);}

 /**Seter <b>setBit4</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit4(int wartosc) {
     ustawPortD(1,wartosc);}

/**Seter <b>setBit5</b>- ustawia bit dla portu D i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit5(int wartosc) {
     ustawPortD(0,wartosc);}

 /**<b>ustawPortD</b> - Metoda ustawia portD odpowiednimi wartościami
 * @param int bit
 * @param int wartosc */
 private void ustawPortD (int bit, int wartosc) {
   if (czy_polaczony==true) {
     int nowy_bit;
     if (wartosc>0)
         nowy_bit=1;
     else nowy_bit=0;
     rejestrD[8-bit-1]=nowy_bit;
     rejestrD[4]=0;
     rejestrD[5]=0;
     String wyjscie="";
     for (int i=0;i<8;i++)
       wyjscie = wyjscie + rejestrD[i];
     
     String wyjscie2 = stringBinToStringHex(wyjscie);
     ss.writeString(wyjscie2 + " portd =");
     ss.writeByte((byte)'\n');
    }
 }

 /**Seter <b>setBit6</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit6(int wartosc) {
         ustawPortC(5,wartosc);   }

 /**Seter <b>setBit7</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit7(int wartosc) {
     ustawPortC(4,wartosc);  }

 /**Seter <b>setBit8</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit8(int wartosc) {
     ustawPortC(3,wartosc);  }

 /**Seter <b>setBit9</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit9(int wartosc) {
     ustawPortC(2,wartosc);  }

 /**Seter <b>setBit10</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit10(int wartosc) {
     ustawPortC(1,wartosc);  }

 /**Seter <b>setBit11</b>- ustawia bit dla portu C i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit11(int wartosc) {
     ustawPortC(0,wartosc);  }

 /**<b>ustawPortC</b> - Metoda ustawia portC odpowiednimi wartościami
 * @param int bit
 * @param int wartosc */
  private void ustawPortC (int bit, int wartosc) {
   if (czy_polaczony==true) {
     int nowy_bit;
     if (wartosc>0)
         nowy_bit=1;
     else nowy_bit=0;
     rejestrC[8-bit-1]=nowy_bit;
     String wyjscie="";
     for (int i=0;i<8;i++)
       wyjscie = wyjscie + rejestrC[i];

    String wyjscie2 = stringBinToStringHex(wyjscie);
    ss.writeString(wyjscie2 + " portc =");
    ss.writeByte((byte)'\n');
    }
 }

 /**Seter <b>setBit12</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
public void setBit12(int wartosc) {
         ustawPortB(5,wartosc);   }

 /**Seter <b>setBit13</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit13(int wartosc) {
     ustawPortB(4,wartosc);  }

 /**Seter <b>setBit14</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit14(int wartosc) {
     ustawPortB(3,wartosc);  }

 /**Seter <b>setBit15</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit15(int wartosc) {
     ustawPortB(2,wartosc);  }

 /**Seter <b>setBit16</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit16(int wartosc) {
     ustawPortB(1,wartosc);  }

 /**Seter <b>setBit17</b>- ustawia bit dla portu B i wywoluje metodę
 * @param int wartosc: wartosc do ustawienia*/
 public void setBit17(int wartosc) {
     ustawPortB(0,wartosc);  }

/**<b>ustawPortB</b> - Metoda ustawia portC odpowiednimi wartościami
 * @param int bit
 * @param int wartosc */
  private void ustawPortB (int bit, int wartosc) {
   if (czy_polaczony==true) {
     int nowy_bit;
     if (wartosc>0)
         nowy_bit=1;
     else nowy_bit=0;
     rejestrB[8-bit-1]=nowy_bit;
     String wyjscie="";
     for (int i=0;i<8;i++)
         wyjscie = wyjscie + rejestrB[i];

    String wyjscie2 = stringBinToStringHex(wyjscie);
    ss.writeString(wyjscie2 + " portb =");
    ss.writeByte((byte)'\n');
   }
 }

 /**<b>sstringBinToStringHex</b> - Metoda zamiana wartości
 * @param String wejscie */
 private String stringBinToStringHex (String wejscie) {
     String wyjscie = "";
     if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='0')
         wyjscie = "0";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='1')
         wyjscie = "1";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='0')
         wyjscie = "2";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='1')
         wyjscie = "3";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='0')
         wyjscie = "4";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='1')
         wyjscie = "5";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='0')
         wyjscie = "6";
      if ((wejscie.charAt(0)=='0')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='1')
         wyjscie = "7";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='0')
         wyjscie = "8";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='1')
         wyjscie = "9";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='0')
         wyjscie = "a";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='0')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='1')
         wyjscie = "b";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='0')
         wyjscie = "c";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='0')&&wejscie.charAt(3)=='1')
         wyjscie = "d";
      if ((wejscie.charAt(0)=='1')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='0')
         wyjscie = "e";
      if ((wejscie.charAt(0)== '1')&&(wejscie.charAt(1)=='1')&&(wejscie.charAt(2)=='1')&&wejscie.charAt(3)=='1')
         wyjscie = "f";

     if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "0";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "1";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "2";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "3";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "4";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "5";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "6";
      if ((wejscie.charAt(4)=='0')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "7";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "8";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "9";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "a";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='0')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "b";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "c";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='0')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "d";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='0')
         wyjscie = wyjscie + "e";
      if ((wejscie.charAt(4)=='1')&&(wejscie.charAt(5)=='1')&&(wejscie.charAt(6)=='1')&&wejscie.charAt(7)=='1')
         wyjscie = wyjscie + "f";
  return wyjscie;
 }

/**IsSeter <b>isConnected</b> - Metoda spradza połączenie*/
public boolean isConnected () {
    if (ss != null)
        return true;
    else
        return false;

}

/**Geter <b>getConnectedPort</b> - geter zwaraca który port COM jest ustawiony
 * @return - zwroc_port */
public String getConnectedPort() {
    String zwroc_port="COM";
    if (czy_polaczony==true)
    zwroc_port=zwroc_port + port;
    else zwroc_port="Brak połączenia";
    return zwroc_port;
}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton buttonPolacz;
    private javax.swing.JButton buttonWykryjPorty;
    private javax.swing.JButton jButton9;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JSpinner jSpinner1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JComboBox komboListaPortow;
    private javax.swing.JLabel labelKomunikat;
    // End of variables declaration//GEN-END:variables
}